// const BASE_URL = 'http://192.168.110.192:9004' // 本地开发环境
// const BASE_URL = 'http://192.168.87.148:9004' // 手机热点(本都开发)环境
// const BASE_URL = 'http://1.94.142.142:9004' // 线上环境
const BASE_URL = 'http://192.168.1.102:9004' // 主机环境

// 导入储存信息
import Storages from '@/utils/storages'

// 系统常量
const SYSTEM = {
	VERSION_NUMBER: uni.getSystemInfoSync().appVersion,
}
// 唯一标识生成器
const generateUniqueIdentifier = () => {
    let uniqueIdentifier = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15)
    // 获取长度
    let length = uniqueIdentifier.length;
    // 在唯一标识前面加上长度
    uniqueIdentifier = length + "|" + uniqueIdentifier
    // 在唯一标识后面加上时间戳
    uniqueIdentifier = uniqueIdentifier + Date.now()
    return uniqueIdentifier
}

// 请求拦截器
const request = (options) => {
	return new Promise((resolve, reject) => {

		// 获取存储的 user_id
		const user_id = uni.getStorageSync(Storages.UserInfo.userInfo)
        
        if(options.method == 'POST') {
            // 如果是POST请求，在请求头中添加唯一标识
            options.header = {
                ...options.header,
                'X-CJL': generateUniqueIdentifier()
            }
        }
		
		// 合并请求头
		const header = {
			'Content-Type': 'application/x-www-form-urlencoded',
			...options.header
		}
		if (user_id) {
			
			// 如果 data 是对象，就添加 user_id
			if(typeof options.data === 'object') {
				
				options.data['user_id'] = user_id.user_id
			}
		}
		
		uni.request({
			url: BASE_URL + options.url,
			method: options.method || 'GET',
			data: options.data,
			header: header,
			success: (res) => {
				if (res.statusCode === 200) {
					resolve(res.data)
				} else {
					reject(res)
				}
			},
			fail: (err) => {
				reject(err)
			}
		})
	})
}

// API 接口
export const api = {

    // 获取 Token
    getToken: () => {
        return request({
            url: '/api/system/get_csrf_token/',
            method: 'GET'
        })
    },

    
	// 登录
	login: (data) => {
		return request({
			url: '/api/users/login/login/',
			method: 'POST',
			data
		})
	},
	
	// 注册
	register: (data) => {
		return request({
			url: '/api/users/login/register/',
			method: 'POST',
			data
		})
	},
    request: (options) => {
		return request(options)
	},
    BASE_URL: BASE_URL,
	SYSTEM: SYSTEM
	
	// 其他接口...
} 